#include <iostream>
#include <stdio.h>
using namespace std;

int getA()
{
	int a;
	a = 10;
	return a;
}

//基础类型a返回的时候，也会有一个副本
int& getB()
{
	int b;
	b = 10;
	printf("%d\n",b);
	return b;//编译器返回b的地址
//函数执行完毕，程序将释放分配给局部对象的存储空间。
//此时对局部对象的引用就会指向不确定的内存。
}

int* getC()
{
	int c;
	c = 10;
	return &c;//返回指针
}

int main()
{
//	int a=getA();
	int b1=100;
	getB()=b1;//b1接的是副本
	getB();
//	int& b2=getB();//b2乱码，b2存放b的地址，b内存空间值已被释放，不确定。
//	int *c=getC();

//	printf("a:%d\n",a);//
//	printf("b1:%d\n",b1);
//	printf("b2:%d\n",b2);
//	printf("c:%p\n",&c);

	return 0;
}
